package com.youlin.controller;

import com.youlin.dto.*;
import com.youlin.dto.req.EditAppReqDto;
import com.youlin.dto.req.FindAllAppReqDto;
import com.youlin.dto.req.FindAllAreaReqDto;
import com.youlin.dto.res.AppInfoResDto;
import com.youlin.entities.BygAdmin;
import com.youlin.entities.BygArea;
import com.youlin.service.BygAppInfoService;
import com.youlin.service.BygAreaService;
import com.youlin.untils.AdminUtil;
import com.youlin.untils.MyBeanUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiOperationSort;
import io.swagger.annotations.ApiSort;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

/**
 * 单位管理
 */
@ApiSort(3)
@Api(tags = {"3 - 单位管理"})
@RestController
@RequestMapping("/bygApp")
@CrossOrigin
public class BygAppController {

    @Autowired
    private BygAppInfoService bygAppInfoService;
    @Autowired
    private BygAreaService bygAreaService;

    /**
     * 获取全部单位信息列表
     */
    @PostMapping("/findAppInfos")
    @ApiOperationSort(value = 1)
    @ApiOperation(value = "1 - 获取全部单位信息列表")
    public PageDataResDto<List<AppInfoResDto>> findAppInfos(@RequestBody PageDataReqDto<FindAllAppReqDto> baseReqDto) {
        FindAllAppReqDto data = baseReqDto.getData();
        PageInfo pageInfo = baseReqDto.getPageInfo();
        BygAdmin currentAdmin = AdminUtil.getCurrentAdmin();
        return bygAppInfoService.findAppInfos(currentAdmin, data, pageInfo);
    }

    /**
     * 新建/编辑/删除单位信息
     */
    @PostMapping("/editAppInfo")
    @ApiOperationSort(value = 2)
    @ApiOperation(value = "2 - 新建/编辑/删除单位信息")
    public BaseResDto<Status, String> editAppInfo(@RequestBody BaseReqDto<EditAppReqDto> baseReqDto) {
        EditAppReqDto data = baseReqDto.getData();
        if (data.getIsDel() == null && MyBeanUtil.isParamError(data))
            return new BaseResDto<>(Status.PARAMETERERROR);
        return bygAppInfoService.editAppInfo(data);
    }

    /**
     * 获取省份或城市数据列表
     */
    @PostMapping("/findAllAreas")
    @ApiOperationSort(value = 3)
    @ApiOperation(value = "3 - 获取省份或城市数据列表")
    public BaseDataResDto<List<BygArea>> findAllAreas(@RequestBody BaseReqDto<FindAllAreaReqDto> baseReqDto) {
        FindAllAreaReqDto data = baseReqDto.getData();
        if (MyBeanUtil.isParamError(data)) return new BaseDataResDto<>(Status.PARAMETERERROR);
        return bygAreaService.findAllAreas(data);
    }

    /**
     * 根据单位ID获取单位信息
     */
    @PostMapping("/findAppInfoById")
    @ApiOperationSort(value = 4)
    @ApiOperation(value = "4 - 根据单位ID获取单位信息", notes = "请求参数：data = 单位ID")
    public BaseDataResDto<AppInfoResDto> findAppInfoById(@RequestBody BaseReqDto<Integer> baseReqDto) {
        if (baseReqDto.getData() == null) return new BaseDataResDto<>(Status.PARAMETERERROR);
        return bygAppInfoService.findAppInfoById(baseReqDto.getData());
    }

}